package com.altran.web.servlet;

import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.altran.web.forms.FormularioFiltrosFechasGeneral;
import com.altran.web.model.Consultor;
import com.altran.web.model.Dedicacion;
import com.altran.web.service.GestionDedicacionesServ;
import com.altran.web.service.GestionDedicacionesServImpl;
import com.altran.web.utilities.Utilities;

/**
 * Servlet implementation class GestionVistasServlet
 */
public class GestionVistaGeneralServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Date fechaInicio = new Date();
		Date fechaFinal = new Date();
		//Número de días a mostrar por defecto
		int numDias = 15;
		FormularioFiltrosFechasGeneral form = null;
		
		/*Nos han pulsado el botón de filtrado de fechas*/
		if (request.getParameter("buscar") != null) {
			
			form = new FormularioFiltrosFechasGeneral(request);
			/*Si no existen errores de validación en el formulario*/
			if (form.getMensajesError().size() == 0) {
				fechaInicio = form.getFechaInicial();
				fechaFinal = form.getFechaFinal();
				/*TODO Calcular el numero de dias entre la fechaInicial y fechaFinal*/
				numDias = (int) Utilities.obtenerNumDiasEntreFechas(fechaInicio, fechaFinal) + 1;
			} 
		} 
		
		Map<String, Integer> mapaDedicacionesAcumuladas = new HashMap<String, Integer>();
		Map<Consultor, Map<String, Integer>> mapaConsultoresDedicacionesAcumuladas = 
				new HashMap<Consultor, Map<String, Integer>>();
		
		GestionDedicacionesServ servicio = new GestionDedicacionesServImpl();
		List<Consultor> listConsultores = servicio.obtenerConsultores();
		
		for (Consultor consultor : listConsultores) {
			
			List<Dedicacion> dedicaciones = 
					servicio.obtenerDedicacionesByConsultorByPeriod(
							consultor.getId_consultor(), fechaInicio, numDias);
			mapaDedicacionesAcumuladas = servicio.mapearPeriodoByConsultor(dedicaciones, fechaInicio, numDias);
			mapaConsultoresDedicacionesAcumuladas.put(consultor, mapaDedicacionesAcumuladas);
		}
		
		request.setAttribute("form", form);
		request.setAttribute("intervalofechas", Utilities.obtenerFechasEntreIntervalo(fechaInicio, numDias));
		request.setAttribute("mapaConsultoresDedicacionesAcumuladas", mapaConsultoresDedicacionesAcumuladas);
		RequestDispatcher dispatcher = 
				request.getRequestDispatcher("calendariogeneralconsultores.jsp");
		dispatcher.forward(request, response);
			
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

}
